package cn.cjlmonster.hyouka_assistant.webView;

import android.annotation.SuppressLint;
import android.content.Context;
import android.os.Build;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;
import android.webkit.WebSettings;
import android.webkit.WebView;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

/**
 * 富文本WebView
 *
 * @author cjl
 */
public class RichWebView extends WebView {

    public RichWebView(@NonNull Context context) {
        this(context, null);
    }

    public RichWebView(@NonNull Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    @SuppressLint("SetJavaScriptEnabled")
    private void init() {
        WebSettings settings = getSettings();

        Log.d("网页测试", settings.getUserAgentString());

        // 缓存模式说明:
        // LOAD_CACHE_ONLY: 不使用网络，只读取本地缓存数据
        // LOAD_NO_CACHE: 不使用缓存，只从网络获取数据.
        // LOAD_DEFAULT: （默认）根据cache-control决定是否从网络上取数据。
        // LOAD_CACHE_ELSE_NETWORK，只要本地有，无论是否过期，或者no-cache，都使用缓存中的数据。
        settings.setCacheMode(WebSettings.LOAD_DEFAULT);

        // Application Cache 缓存机制
        // String cacheDirPath = BaseApplication.Companion.getInstance().getFilesDir().getAbsolutePath() + "cache/";
        // 1. 设置缓存路径
        // settings.setAppCachePath(cacheDirPath);
        // 2. 开启Application Cache存储机制
        // settings.setAppCacheEnabled(true);

        // Dom Storage 缓存机制
        // 开启DOM storage
        settings.setDomStorageEnabled(true);

        // Web SQL Database 缓存机制
        // 开启 数据库存储机制
        // settings.setDatabaseEnabled(true);

        // IndexedDB 缓存机制
        // 只需设置支持JS就自动打开IndexedDB存储机制
        // Android 在4.4开始加入对 IndexedDB 的支持，只需打开允许 JS 执行的开关就好了。
        settings.setJavaScriptEnabled(true);

        settings.setBuiltInZoomControls(false);
        settings.setDisplayZoomControls(false);
        settings.setTextZoom(100);

        // settings.setUseWideViewPort(true);
        // settings.setLoadWithOverviewMode(true);
        // settings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);

        settings.setDefaultTextEncodingName("UTF-8");
        settings.setBlockNetworkImage(false);

        // CookieManager.getInstance().acceptThirdPartyCookies(this);

        settings.setMixedContentMode(WebSettings.MIXED_CONTENT_COMPATIBILITY_MODE);  // 注意安卓5.0以上的权限

        //        webView.setWebChromeClient(new WebChromeClient());
        //        webView.setWebViewClient(new WebViewClient());
        setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);

        // setLayerType(View.LAYER_TYPE_HARDWARE, null);
        setBackgroundColor(0x00000000);

        setOverScrollMode(View.OVER_SCROLL_NEVER);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
            setForceDarkAllowed(false);
        }

        // setLongClickable(false);
        // setOnLongClickListener(v -> {
        //     return true; // 阻止长按事件
        // });
    }

}
